Git常用命令

GitHub

创建新仓库

git init

检出仓库

​ 创建本地仓库的克隆版本:

git clone /path/to/repository

​ 克隆远程仓库:

git clone username@host:/path/to/repository
或者 git clone https://github.com/username/repository

​ 克隆分支仓库:

git clone -b 分支名 仓库地址

添加与提交

git add <filename>git add * 或 git add .
git commit -m "information about this commit"

推送改动

git push origin master //master可以换成任何分支

如果还没有关联远程仓库,则需要如下添加命令:
git remote add origin <server>

分支操作

 创建 git checkout -b feature_x

 切换 git checkout master

 删除 git branch -d feature_x

删除远程分支 git push --delete origin feature_x

更新与合并

git pull //此操作即在你的工作目录中获取(fetch)并合并(merge)远端的改动

 git merge <branch> //合并其他分支到你的当前分支

git diff <source_branch> <target_branch> //合并改动前查看可能导致的冲突

如果希望对比暂存区和当前的HEAD,可以使用:
git diff --cached

创建标签

git tag 1.0.0 dgf3d45jhe //创建一个1.0.0的标签

删除仓库文件

git rm path/to/file --cached  //将文件从暂存区索引中删除,但是会保留在工作目录。

git rm file -f         //完全删除文件

恢复暂存区

git reset

git reset --hard

​git reset --mixed

git reset --soft

配置本地git账户

git config --global user.name "YourName"

git config --global user.email "email@example.com"

git config –global core.editor vim

git config –list

git config --global http.sslVerify "false"

关联远程仓库

git remote add origin git@github.com:CyanZee/vim.git

其他命令

git status  //查看仓库状态

git log //显示从最近到最远的提交日志或 git log --pretty=online

git log --graph --oneline --all

git reset --hard HEAD^ //回退上一个版本

git reset --hard commit_Id //根据具体的版本号回退版本

git reflog //查看历史命令

git branch -d hyy-feat-vehicle  //删除分支hyy-feat-vehicle

git checkout -b vir-branch //基于当前分支,新建一个分支vir-branch

删除暂存区文件

git reset HEAD bash_demo.txt

git checkout -- bash_demo.txt

删除仓库内文件

git rm bash_demo.txt           //将文件从暂存区索引中删除

git commit -m "delete bash_demo.txt"   //将暂存区的更改提交到本地仓库
备注:要先在github上创建同名的仓库;要先提交到本地仓库,再进行与远程仓库关联;

要先拉取更改(git pull),再提交更改(git push);一般步骤如下:
git add .
git commit -m "..."
git push -u origin master

常用操作

git本地已经有了master分支,如何获取develop分支的源代码(不做合并操作,只拉取代码):

git checkout -b develop origin/develop

用 git clone --depth=1 的好处是限制 clone 的深度,不会下载 Git 协作的历史记录,这样可以大大加快克隆的速度

恢复本地误删的文件或文件夹

step1:  git status
step2:  git reset HEAD 被删除的文件或文件夹
step3:  git checkout 被删除的文件或文件夹

git rebase 的使用

1、切换到自己功能开发分支

git checkout feature_01

2、执行rebase

git rebase dev

以上命令会把"feature_01"分支里的每个提交取消掉,并且把它们临时保存为补丁(path),这些补丁放到".git/rebase"目录中,然后把"feature_01"分支更新到最新的"dev"分支,最后把保存的这些补丁应用到"feature_01"分支上。

例如,当前的分支状态如:
在这里插入图片描述
执行git merge之后
在这里插入图片描述
执行git rebase之后
在这里插入图片描述
在这里插入图片描述
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:

$ git rebase --continue

这样git会继续应用(apply)余下的补丁。

在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。

$ git rebase --abort

git stash 的使用

git stash							//执行存储
git stash save "save message"   	//执行存储时,添加备注,方便查找
git stash list						//查看stash
git stash show [stash@{$num}] [-p]	//显示做了哪些改动,默认显示第一个存储
git stash apply [stash@{$num}]		//应用某个存储,但不会把存储从列表中删除,默认使用第一个,即stash@{0}
git stash pop [stash@{$num}]		//恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash
git stash drop stash@{$num}			//丢弃stash@{$num}存储,从列表中删除
git stash clear						//删除所以缓存的stash

注:新增的文件,直接执行stash是不会被存储的

git submodule的使用

添加子模块

git submodule add <子项目url> <子项目存放的本地的文件夹名>
eg: git submodule add https://github.com/falconray0704/libShell.git ./libShell

查看子模块

git submodule

更新子模块

//更新项目内子模块到最新版本
git submodule update

//更新子模块为远程项目的最新版本
git submodule update --remote

克隆包含子模块的项目

方法一:先克隆父项目,再更新子模块

//克隆父项目
# git clone git clone https://github.com/falconray0704/sysCfg
# cd sysCfg/libShell

//查看子模块
# git submodule
--7cd06c7282baf317b254205676fd50fd17379622 ./ 

//初始化子模块
# git submodule init
Submodule 'libShell' (https://github.com/falconray0704/libShell.git) registered for path './'

//更新子模块
# git submodule update
或者 git submodule update --init

方法二:递归克隆整个项目

git clone git clone https://github.com/falconray0704/sysCfg libShell --recursive

删除子模块

删除子模块文件夹

git rm --cached libShell
rm -rf libShell

删除.gitmodules文件夹中相关子模块信息

[submodule "libShell"]
	path = libShell
	url = https://github.com/falconray0704/libShell.git

删除.git/config文件夹中的相关子模块信息

[submodule "libShell"]
        active = true
        url = https://github.com/falconray0704/libShell.git

删除.git文件夹中的相关子模块文件

rm -rf .git/modules/libShell

Syncing works流程

如何在本地建立开发工作区

1、先fork工作仓库到自己的仓库

2、clone fork出来的仓库到本地

git clone https://github.com/CyanZee/rk1126.git

git branch

git branch -a

git branch -v

git config --local core.editor vim

3、与远程upstream建立同步开发链接

git remote add upstream https://github.com/zsync/rk1126.git

git branch

git branch -a

git branch -v

4、拉取远程origin更新

git fetch origin

git branch -a

git branch -r

5、拉取远程upstream更新

git fetch upstream

git branch -a

git branch -r

6、checkout远程upstream的dev分支

git checkout -b dev upstream/dev

git log --oneline

7、将拉取到的最新的upstream/dev分支提交到远程origin/dev分支

git push -u origin develop

git branch -a

git branch -r

git remote -v

git status

8、在本地基于dev分支checkout自己的一个开发分支

git checkout -b feature_0

/\*开发过程,略\*/
...
...

9.开发完成后,向远程origin提交开发分支

git push -u origin feature_01

git branch -a

git branch -v

git status

git log --oneline

10.在github上发起一个pull request 将origin/feature_01 merge 到 upstream/dev分支上

#################################################################################

Make pull request for merging branch “origin/feature_01” into branch “upstream/develop” on github website.

#################################################################################

  1. 如果是 upstream repo,你只可以拉取最新代码(即 git fetch ),从而保证你本地的仓库与源仓库同步

  2. 如果是 origin repo,就是你自己的repo(自己创建的,或者 fork 的项目)你可以做 任何推拉操作(pull and
    push)

  3. 你可以通过 pull request 向 upstream repo 贡献代码

如何进行同步开发以及pull request

1、从dev分支checkout出新的分支feature_01做功能开发

​ git checkout -b feature_01 //在dev 分支下操作

2、开发完成后,对dev做rebase,再提交本地代码到远程仓库

​ git rebase dev //在feature_01分支下操作

​ git push -u origin feature_01 //提交到远程仓库,并建立跟踪

3、在github上将feature_01对upstream仓库发起pull request

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值