常用Git命令

通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值