通过git命令可以对项目代码库执行克隆、拉取、提交等操作。常用的git命令有如下
git clone
克隆代码库,把远程代码库克隆到本机当前目录,如
$ git clone https://github.com/PX4/PX4-Autopilot
如果代码库包含子代码库,可以加上–recursive选项,递归克隆包含的所有子代码库
$ git clone https://github.com/PX4/PX4-Autopilot --recursive
这一步等同于下面的两步
$ git clone https://github.com/PX4/PX4-Autopilot
$ git submodule update --init --recursive
git submodule update
更新子代码库
$ git submodule update --init --recursive
其中,–init表示初始化,–recurve表示递归
更新某个指定的子代码库,如
$ git submodule update --init --recursive – ‘Tools/sitl_gazebo’
加上–force选项,可以进行强制更新,如
$ git submodule update --init --recursive --force – ‘Tools/sitl_gazebo’
git fetch&pull
从远程代码库拉取代码到本地
$ git fetch origin branch_name
把远程的分支拉取到本地,并和当前分支merge
$ git pull origin branch_name
pull和fetch的区别在于,fetch只是从远程拉取分支到本地但是并不与本地的对应分支merge,pull拉取远程分支并与本地的对应分支进行merge
$ git pull
$ git pull origin
从远程拉取当前分支并进行merge
git push
把本地仓库推送到远程
$ git push
把本地的当前分支推送到远程
$ git push -f
-f,–force选项强制推送,覆盖原有的修改
如果是新建的分支,则需要指定远程分支名,并设定–set-upstream选项
$ git push --set-upstream orign new_branch
–set-upstream选项使当前分支与远程分支关联起来,后续推送时只需运行git push,而不必指定远程分支名
$ git push --all
更新所有远程分支,本地新建分支推送到远程新建同名分支
通过git push命令删除远程分支,标签等
$ git push origin --delete branch_name
$ git push origin --delete tag_name
git branch
查看分支信息
$ git branch
查看远程分支信息
$ git branch -r
查看所有分支信息
$ git branch -a
创建一个分支
$ git branch new_branch
new_branch为新建分支名,新建分支的内容和当前分支一样
修改分支名称
$ git branch -m new_branch_name #修改当前分支名称
$ git branch -m old_branch_name new_branch_name #修改指定分支名称
删除一个分支
$ git branch -d branch
$ git branch -D branch
-D为强制删除
git checkout
检出一个分支
$ git checkout branch_name
检出一个commit
$ git checkout <commit_id>
$ git checkout HEAD^
等。commit_id为提交号,HEAD^为当前checkout版本的上一个提交。
创建并切换到该分支
$ git checkout -b new_branch
其中new_branch为新建的分支名,新建分支的内容和当前分支一样
checkout还有一个功能,就是清空当前更改,其实就是重新检出所有文件
$ git checkout .
git add
将工作区的文件修改提交到缓存区
$ git add <file1> <file2>
其中<file1>,<file2>等为需要提交的缓存区
将某个目录提交到缓存区
$ git add <path>
将当前目录所有文件提交到缓存区,包括新增文件(不包括删除文件)
$ git add .
将所有修改提交到缓存区,包括文件删除
$ git add --all
git merge
合并分支
$ git merge branch_name
$ git merge branch_name --no-ff
把分支合并到当前的分支,branch_name为需要合并的分支名称。–no-ff选项表示略去分支中中间修改的commit记录,只在当前分支产生一个合并的commit。
git commit
提交到本地仓库
$ git commit -m ‘message’
message为同步提交的备注信息,在git commit之前需用git add提交修改到缓存区,不然不会提交到库中
提交到本地仓库,同时先提交到缓存区
$ git commit -a -m ‘message’
-a选项表示同时先git add提交到缓存区,不用另外运行git add。
如果有文件新增或者删除的话,还是需要先运行git add .,或者git add --all,再运行git commit。如
$ git add --all
$ git commit -m ‘commit message’
git stash
把当前的更改暂存起来
$ git stash
把之前暂存的修改回复出来
$ git stash pop
git tag
给现有的commit打上一个tag
$ git tag v1.0
如上给当前的checkout打上一个v1.0的标志
显示所有的tag
$ git tag
或者
$ git tag -l
显示某一个特定的tag
$ git show v1.0
删除一个tag
$ git tag -d v1.0
把本地的tag推送到远程
推送某个tag,比如v1.0
$ git push origin v1.0
推送所有tags
$ git push --tags
git config
配置git相关信息
$ git config user.name
$ git config user.email
$ git config --list
查看git的用户名、邮件地址等配置信息
$ git config --global user.name “user_name”
$ git config --global user.password “password”
$ git config --global user.email “username@xxx.com”
设置git的用户名、密码和邮件地址信息,global表示全局配置,如果是某一个仓库的设置,则使用–local选项。
$ git remote set-url origin [url]
修改git仓库的远端服务器地址
$git remote -v
查看git仓库的远程服务器地址
git clean
清除未加入到库的文件或文件夹
$ git clean -df
-d选项表示目录,-f选项表示文件。
如果是已跟踪的文件或文件夹,则可以用git reset或git stash命令清除修改,回退到前面一个commit
git reset
用于回退版本,重置修改,回复至之前的commit状态
$ git reset --hard #回退当前版本,放弃全部修改
$ git reset --hard HEAD^ #回退至之前一个版本
$ git reset --hard HEAD~n #回退至之前n个版本
$ git reset --hard commit_id #回退到某一个id号指定的commit
选项 --hard表示当前修改内容全部清除,回退到之前的内容。如果不加这个选项或者 --soft选项,则表示保留当前修改内容,只需要重新commit,就可以提交当前的修改。回退到之前的版本同时撤销该版本之后的commit。
git stash
把修改放置到暂存区
$ git stash
运行命令之后,程序恢复至修改之前,可以通过
$ git stash pop
恢复修改
git status
查看目前分支状态,包含文件修改状态
$ git status
git diff
查看目前文件的修改内容
$ git diff
查看两个分支的差别
$ git diff branch1 branch2
git log
查看当前分支的提交记录
$ git log
这个查询会列出所有提交记录以及对应的提交信息
查看当前分支的提交记录,并显示文件修改记录
$ git log --raw
详细的可以参考git的官方参考文档:https://git-scm.com/docs