Git命令速查手册

Git命令速查手册

1. 首次设置

设置个人标识(全局生效):

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

设置个人标识(仅在项目内生效):

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com

设置编辑器。缺省会使用默认的编辑器。git commit时会打开编辑器,让你填写提交日志:

$ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

查看设置项的值:

$ git config --list --show-origin

2. 克隆远程仓库到本地

$ git clone https://some-site.com/path-to/helloworld.git

如果需指定本地目录名:

$ git clone https://some-site.com/path-to/helloworld.git helloearth

3. 查看文件状态

$ git status

如果需要以short方式输出结果:

$ git status -s
 M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
  • _M:已修改未暂存
  • MM:已修改且暂存,然后又修改
  • A_:新文件已暂存
  • M_:已修改且暂存
  • ??:未跟踪的文件

记法:前面的字符表示暂存状态,后面的字符表示修改状态

4. 查看文件的修改内容

查看未暂存的修改内容:

$ git diff [文件名]

查看已暂存但未提交的修改内容:

$ git diff --staged [文件名]

使用外部工具查看文件修改内容:

$ git difftool [--staged] 文件名

5. 将修改添加到暂存区

添加未追踪文件、添加已追踪文件的修改到暂存区的命令是一样的:

$ git add file1 file2 ...

6. 提交暂存区到仓库

$ git commit

上面的命令会打开编辑器让你填写提交日志。如果想在命令中直接填写提交日志,那么执行下面的命令:

$ git commit -m "你的日志"

7. 暂存提交一步解决

暂存、提交所有已跟踪的文件(使用这个命令要小心,不要提交了不该提交的东西):

$ git commit -a

暂存、提交指定文件:

$ git commit -a file1 file2 ...

8. 移除文件

$ git rm [文件名]

上面的命令会把文件移除,并把文件的移除动作添加到暂存区。之后commit即可将移除提交到仓库中。

如果你想移除一个已经添加到暂存区的文件,使用上面的命令会失败。此时,可加-f参数强制移除,或加-cache移除但在磁盘保留文件:

$git rm -f [文件名]
$git rm -cache [文件名]

9. 撤销

撤销添加到暂存区的操作:

$ git reset HEAD [文件名]

撤销工作目录中文件的修改(git用最后提交的版本来覆盖它,对文件做的修改将消失,无法追回):

$ git checkout -- [文件名]

10. 查看提交记录

基本命令:

$ git log

显示每次提交的详细变动(查看变动的代码行):

$ git log -p (或--patch)

显示每次提交的概要变动(包括修改了哪些文件,以及变动的行数统计):

$ git log --stat

将每次提交记录显示为一行(仅显示版本号及日志):

$ git log --pretty=oneline

显示前两周的提交记录:

$ git log --since=2.weeks

显示指定日期之后的提交记录:

$ git log --since='2020-01-20'

显示指定日志迁建的提交记录:

$ git log --until='2020-02-29'

提取指定作者的提交记录:

$ git log --author='tony.stark'

提取日志中包含指定关键字的提交记录:

$ git log --grep='keywords'

11. 分支操作

列出本地分支,结果中带’*'的就是本地的当前分支:

$ git branch
* master

列出所有分支,包括远程分支:

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

创建本地分支,不会切换到新建的分支上:

$ git branch <newbranchname>

切换到本地分支:

$ git checkout <branchname>

切换到本地分支,如果不存在则创建之:

$git checkout -b <newbranchname>

删除本地分支:

$ git branch -d <branchname>

合并本地分支<branchname>到当前分支:

$ git merge <branchname>

查看已经merge到当前分支的分支:

$ git branch --merged

查看还未merge到当前分支的分支(使用-d删除这些分支无法成功,使用-D可强制删除,但丢失该分支上的提交记录,除非使用提交的SHA1值才能找回):

$ git branch --no-merged

12. 如果合并分支时发生冲突,怎么办?

如果合并分支时发生冲突,会输出下面内容:

$ git merge iss53
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

此时运行git status查看冲突的文件:

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      index.html

no changes added to commit (use "git add" and/or "git commit -a")

打开冲突的文件,git在冲突的地方添加了标记 <<<<<<<, =======, 和 >>>>>>>

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
 please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

将代码修改正确。

然后使用git add命令暂存,然后git commit提交。

如果你配置了冲突修改工具,那么在合并发生冲突之后,运行mergetool。可在图形工具中解决冲突:

git mergetool

13. 操作远程仓库

查看远程仓库信息:

$ git remote -v
origin	http://10.0.200.60/SDK_Dev/wechat_proxy.git (fetch)
origin	http://10.0.200.60/SDK_Dev/wechat_proxy.git (push)
$ git remote show origin
* remote origin
  Fetch URL: http://10.0.200.60/SDK_Dev/wechat_proxy.git
  Push  URL: http://10.0.200.60/SDK_Dev/wechat_proxy.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

拉取本地当前分支所绑定的远程分支,合并到当前分支。

$ git pull

上传本地当前分支到其绑定的远程分支:

$ git push

如果本地的当前分支没有绑定远程分支,那么需使用下面指令拉取和上传:

$ git pull <remote> <branch>
$ git push <remote> <branch>

检出远程分支,在本地创建一个绑定它的分支,并切入该分支:

$ git checkout -b <本地分支名> <remote>/<远程分支名>

检出tag,在本地创建一个分支,且切入该分支(用来对tag进行代码查看、或bug修复):

$ git checkout -b <branchname> <tagname>

删除远程分支:

$ git push origin --delete <branchname>

14. 获取帮助

$ git <command> -h

或(这个输出更详细)

$ git <command> help
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空旅客er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值