GIt使用命令使用手册

命令集总结

新的git repo创建

git工具可以实现高效的项目管理;目前代码项目的管理大多采用git;首先我们需要在远端(remote)建立新的repo(仓库);具体实现见下面

//新建工程目录,创建新的工程,(以linux kernel为例)
mkdir kernel

//拷贝源码到该目录下(以linux为例)
cp -R /download/linux-kernel/ kernel/

//在远端remote端建立新的repo
创建成功后,可以找到相应的git repo远端网址https://github.com/xxx/xxx.git

//进入本地目录
cd kernel/

//使用git bash进行初始化
git init

//添加文件
git add .

//提交commit
git commit -s -m "first commit"

//链接本地工程和远端repo
git remote add origin https://github.com/xxx/xxx.git

//push本地代码到remote端repo
git push -u origin master

创建本地分支及远程分支

// 基本远程仓库的分支建立本地分支
git branch local-branch remote-branch

// 本地分支的切换
git branch    //查看现已创建的本地分支
git checkout local-branch  //切换到本地分支:local-branch

// 基于本地新建的分支,创建对应的远程分支
git push origin local-branch: remote-local-branch

// 关联本地分支和远程分支
git branch --set-upstream-to=origin/remote_branch  local_branch

// 查看本地分支和远程分支是否关联
git status

//删除远程分支
git push origin --delete remote-local-branch

//删除本地分支
git branch -d|-D local-branch

//查看所有分支(远程和本地)
git branch -a

//查看本地所有分支
git branch

//查看远程所有分支
git branch -r

//基于远端repo的某个commit创建新的本地分支
git checkout -b local-branch commit-id

git rebase流程

git rebase主要用于同步和更新分支间的差异
举例:把remote-branch-B中的改动同步到remote-branch-A

// checkout到需要合并的分支remote-branch-B
git checkout remote-branch-B
git pull

// checkout到需要合并的分支remote-branch-A
git checkout remote-branch-A
git rebase remote-branch-B
git add .
git rebase --continue		//有冲突
git add .
git commit -s -m "rebase remote-branch-A using remote-branch-B"
git push -f

查看git历史

通过git log相关可以查看git提交的历史情况
// 查看某个文件的修改历史
git log file-name

// 显示每次提交的diff
git log -p file-name

// 查看某次提交中的某个文件变化
git log commit-id file-name

//查看本地分支和远端对应分支的差异
git diff
git diff > diff.txt   //输出差异文件到diff.txt

git中CRLF与LF的转换

在项目的开发中,可能会遇到不同系统的代码提交问题,这时会遇到LF/CRLF的转换,设置不当,会使得某些执行文件失去权限报错;所以尽量在开发前,先对git的使用环境进行设置;,其中就包括这一项:

// 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true   

// 提交时转换为LF,检出时不转换
git config --global core.autocrlf input   

// 提交检出均不转换
git config --global core.autocrlf false

使用git修改文件权限

使用不同系统的git来管理代码时,可能会修改到文件的权限,导致文件无法正常执行;通过git命令修改文件,并且重新提交到远端;

// 修改文件权限为可执行文件
git update-index --chmod=+x filename  
    eg:git update-index --chmod=+x implement.sh

git diff查看修改,出现^M换行问题

在不同系统的git操作时,有时会遇到^M换行的问题,可以通过以下办法解决:

git config --global core.whitespace cr-at-eol

git屏蔽不必要的文件上传

1.在git repo根目录下创建.gitignore文件
	touch .gitignore
2.利用notepad++打开编辑需要禁止的文件或文件夹
	/a.txt   //屏蔽根目录下的a.txt
	/subdir	//屏蔽子目录subdir及其内部所有文件
	/subdir1/b.txt  //屏蔽子目录sudir1下的文件b.txt
	*.txt	//屏蔽所有的txt文件

git撤销提交操作

在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset)、反做(revert);
1.git reset
git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,与git revert的区别在于,git reset不会创建新的commit,只会回退到之前存在的某个commit id

git reset --hard master

2.git revert
git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。

git revert流程
	1.git add .
	2.git commit -s -m "add test1.txt"
	3.git push -f
	4.git add .
	5.git commit -s -m "add test2.txt"
	6.git push -f
	7.git log  //查询 "add test1.txt"的commit id 
	8.git revert -n commit-id //revert "add test1.txt"
	9.git commit -s -m "revert add test1.txt"
	9.git push -f
	10.git log //可以看到创建了一个新的commit"revert "add test1.txt""

1.在git repo根目录下创建.gitignore文件
   touch .gitignore
2.利用notepad++打开编辑需要禁止的文件或文件夹
   /a.txt   //屏蔽根目录下的a.txt
   /subdir	//屏蔽子目录subdir及其内部所有文件
   /subdir1/b.txt  //屏蔽子目录sudir1下的文件b.txt
   *.txt	//屏蔽所有的txt文件

git打补丁(patch)

1.git diff生成的标准patch
branch A和branch B的base相同,例如把branch A的修改应用到branch B

	git branch A
	git diff A > patch
	git branch B
	git apply patch
	git add .
	git commit -a -m "Patch Apply"
   git push -f

2.git format-patch生成的git专用补丁

	git branch A
	git format-patch -M A 0001.patch
	git branch B
	git am 0001.patch
	git add .
	git commit -a -m "Patch Apply"
   git push -f

git打tag

	tag是git版本库的一个标记,指向某个commit的指针。
	tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签。
	tag感觉跟branch有点相似,但是本质上和分工上是不同的:
	tag 对应某次commit, 是一个点,是不可移动的。
	branch 对应一系列commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
	所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。

tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如:已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以检出 v2.0 的代码作为一个 branch ,然后作为开发分支。

   1. 查询历史tag
   	git tag
   2. 新增tag
   	git tag v1.0   //新增无备注的tag,默认在当前分支最后一个commit上添加tag
   	git tag -a v1.0 -m "tag备注" //新增有备注的tag,默认在当前分支最后一个commit上添加tag
   	

git使用常用问题

1.删除远程分支出现:remote ref does not exist

   1.解决办法一:清除远程分支的本地缓存
   		git fetch -p origin
   2.解决办法二:
   		错误命令:git push origin --delete origin/xxx
   		不需要origin,修改为:git push origin --delete xxx

参考文档

https://www.cnblogs.com/wangwenhui/p/12141758.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值