第一次使用git命令
首先
这是一个在2020年8月入职的新工程师。
因为git命令很复杂,所以我决定使用SourceTree…
一直以来都在使用SourceTree…
一个月前的时候,我遇到了一个前辈。
「禁止使用SourceTree!!!在不熟悉Git命令之前,至少需要一年時間熟練Git操作!!!!!!!」
非常感谢您的鼓励和指导(实际上您的话更温和一些)。我打算将我以前使用的Git命令和用法等记录下来作为备忘录。
远程存储库的网址
https://github.com/◯◯◯◯/◯◯◯◯.git
开发分支
一个从主分支(master)切出来的分支。将工作分支合并到这里。
自己的工作分支
功能/测试
从开发分支新建的分支。用于添加或修正功能。
将远程仓库的源代码克隆到本地【git clone】。
$ git clone https://github.com/◯◯◯◯/◯◯◯◯.git
直到将代码推送到远程仓库…
// developmentブランチで
$ git checkout -b feature/test
// 現在のブランチの確認
$ git branch
// ステージングに追加・コミット
$ git add .
$ git commit -m 'コミットメッセージ'
// ブランチを移動
$ git checkout development
// リモートリポジトリとの差分を確認
$ git fetch
// リモートのdevelopmentの最新ソースをローカルのdevelopmentにプル
$ git pull origin development
// 作業ブランチに移動
$ git checkout feature/test
// ローカルのdevelopmentブランチのソースをfeature/testブランチにマージ
$ git merge development
// コンフリクトしていないか確認
$ git status
// リモートリポジトリにプッシュ
$ git push origin feature/test
// Github上でプルリクエストを作成!
// Githubからdevelopmentにマージしたら、リモートのdevelopmentも最新にしておく
$ git checkout development
$ git pull origin development
提交后,我从前辈那里学到了如何安全地将更改推送到远程分支。
列出本地分支【git branch】。
我现在在哪个本地分支?
用于确认我当前所在的分支。
$ git branch
// 実行後
* development
feature/test
当前分支是有「*」的地方。
“【git branch -r】显示远程分支”
使用-r或–remotes选项。
$ git branch -r
$ git branch --remotes
【git branch -a】显示所有本地和远程分支。
在命令后加上 -a 或 –all 选项。
$ git branch -a
$ git branch --all
创建并切换到一个新的分支:【git checkout -b】
由于将从当前分支切换到新分支,请确保知道当前分支是哪个。
$ git checkout -b feature/test
$ git branch
// 実行後
development
* feature/test
将远程分支提取到本地并切换到该分支。
如果要将远程存储库的new_branch分支拉到本地
$ git checkout -b new_branch origin/new_branch
$ git branch
// 実行後
development
feature/test
* new_branch // リモートのブランチが追加されている
将编辑、添加或删除的文件添加到暂存区【git add】。
添加要提交的文件。
将所有已更改的文件添加到暂存区。
$ git add .
我希望为每个文件添加到暂存区。
$ git add welcome.blade.php
将添加到暂存区的文件记录到本地仓库【git commit】。
在查看 git log 中的提交历史时,
要写出能够一眼看出做了什么的消息!
$ git commit -m 'コミットメッセージ'
// 実行後
[development fbcdc2f] コミットメッセージ
1 file changed, 1 insertion(+), 1 deletion(-)
【git checkout [分支名称]】移动到指定分支。
当您想切换到其他分支时,请执行以下操作。
$ git branch
// 実行後
development
* feature/test // 現在のブランチ
$ git checkout development
$ git branch
// 実行後
* development // 現在のブランチ 「*」が移動している
feature/test
从远程存储库获取最新的信息
本地存储库的 origin/development 分支已更新为最新版本。
在此时,我的工作文件等不会被更改。
$ git fetch
【git merge】将获取的最新信息合并到当前分支中。
进行 git fetch 后更新最新信息。
执行到这一步,会同时更改自己的工作文件。
$ git merge origin/development
git pull命令用于将远程库的最新源代码拉取到本地库中。
我一次性执行了git fetch和git merge。
$ git pull origin development
显示自上一次提交以来的更改内容【git status】。
我添加过吗?
我提交过吗?
现在是什么状态?
用于确认时使用。
在执行git add之前↓
$ git status
// 実行後
On branch development
Your branch is up to date with 'origin/development'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: Test/resources/views/welcome.blade.php
no changes added to commit (use "git add" and/or "git commit -a")
在git add之后,git commit之前在下方。
$ git status
// 実行後
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: Test/resources/views/welcome.blade.php
将在本地仓库提交的历史记录上传到远程仓库。
$ git push origin feature/test
.
.
.
* [new branch] feature/test -> feature/test
如果没有错误的话,就可以在Github上创建拉取请求。
请进行审查,如果OK的话就请你从Github上合并到development分支。
检查这个git仓库的提交记录。
在列表中显示提交消息。
$ git log
// 実行後
commit 1ab995b929ff92a4d180d7d0786e0f6496c884dd (origin/feature/test)
Author: emika_0402 <emika_0402@test.co.jp>
Date: Mon Dec 21 12:00:00 2020 +0900
コミットメッセージ
当您希望以一行显示提交历史时,请使用以下方法↓
$ git log --oneline
// 実行後
1ab995b (origin/feature/test) コミットメッセージ
放弃暂存前的本地修改【git checkout】。
放弃所有更改↓
$ git checkout .
放弃对指定文件的修改。
$ git checkout Test/resources/views/welcome.blade.php
【git branch -m】修改本地分支名称
$ git branch
* development
feature/test
// feature/test を feature/test2 にしたい
$ git branch -m feature/test feature/test2
$ git branch
* development
feature/test2
【git branch -d】删除本地分支
删除已合并的本地分支时↓
删除已合并的本地分支时↓
$ git branch -d feature/test
无论哪个分支都可以删除↓
$ git branch -D feature/test
将不想提交的更改暂存。
我正在进行作业,但是想切换到另一个分支…
因为我在错误的分支上进行了作业,所以想把更改移到另一个分支上…
$ git stash
// 実行後
Saved working directory and index state WIP on 作業ブランチ名: 親コミットID 親コミットメッセージ
使用【git stash save】命令将带注释的更改暂存起来。
$ git stash save 'コメント'
// 実行後
Saved working directory and index state On 作業ブランチ名: コメント
希望将新文件存储在git stash中。
$ git stash -u
用带有注释的【git stash save -u】命令,想要临时保存带有新文件的修改。
$ git stash save -u 'コメント'
我只想要将特定的文件推到【git stash】。
$ git stash push -- ファイル名
【git过程列表】查看已存储的内容列表
stash@{0}被视为stash的标识符,代表最新的stash。
$ git stash list
// 実行後
stash@{0}: WIP on branch3: 789ijkl third commit
stash@{1}: WIP on branch2: 456efgh second commit
stash@{2}: WIP on branch1: 123abcd first commit
【使用git stash apply命令】将被暂存的更改还原到当前分支上
// 直前の変更(stash@{0})を戻す
$ git stash apply
// 特定のstashを指定して戻す
$ git stash apply stash@{2}
【git stash drop】删除被临时储存的更改
// 直前の変更(stash@{0})を削除する
$ git stash drop
// 特定のstashを指定して削除する
$ git stash drop stash@{2}
【git stash pop】将已隐藏的更改恢复到当前分支并从列表中移除
一起完成git stash apply和git stash drop的操作。
// 直前の変更(stash@{0})を戻す
$ git stash pop
// 特定のstashを指定して戻す
$ git stash pop stash@{1}
【git stash clear】清除所有备份的变更
当您希望删除“git stash list”所显示的所有内容时。
$ git stash clear
最后… …)
我希望能够不断增加新使用的git命令!