git 本地库的操作

http://gocubecloud.com/articles/2020/03/28/1585371407847

一·创建git仓库
1、git是依赖ssh的,创建仓库之前要确保安装ssh
ps -ef | grep “sshd”
如果没有安装ssh
sudo apt-get install openssh-server openssh-client
安装git
sudo apt-get install git-core
2、配置git
git config –global user.name “name”
git config –global user.email “…@…”
设置别名
git config –global alias.st status

查看设置
git config user.name

3、建库
推荐使用 git init -bare 创建裸库,git init 与 git init -bare的区别参见另一篇文章: git init 与 git init –bare 的区别
4、一般使用场景是公司的服务器使用git init -bare 创建一个仓库并add 、commit添加好工程后,开发人员本地使用git clone URL (ex:git clone [email protected].***:/home/user/project/.git) 命令clone一份工程。

下面总结开发人员本地的git 操作。

二·git的工作流

你的本地仓库由 git 维护的三棵“树”组成。
第一个是你的 工作目录,它持有实际文件;
第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;
第三个是 HEAD,它指向你最后一次提交的结果。(本地的版本库)
最后开发人员需要将本地版本库推到服务器端。第一次提交代码使用命令git push -u origin master可以关联本地分支和远程分支。如果没有用-u,以后的pull拉更新的代码时会报错没有关联版本库,这时需要使用git branch -set-upstream-to=origin/ master 命令关联版本库。

三·常用的一些命令

1.一个正常的使用流程命令如下:
git stash
git pull
git stash pop
git add ***.c
git commit -m “***”
git push -u origin master

git status
2.git log显示提交信息和版本ID
git log –oneline 显示简短的版本库log信息。

3.git checkout命令:
git checkout file 从暂存区index中覆盖文件到工作区worktree。
git checkout  hash file 从版本库中覆盖文件到暂存区index和工作区worktree中,可以为版本库的hash值或分支。
git checkout 对工作区进行检查,汇总显示工作区、暂存区与HEAD的差异(未被跟踪的文件,即工作区新加文件,不显示)。
总结
1:检出某个具体文件的的时候,不会改变HEAD头指针,主要使用于指定版本的文件覆盖工作区中对应的文件。如果省略,则会用暂存区的文件覆盖工作区中的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件。
2:不是检出某个具体文件的的时候,单纯的检出某个commit或分支,是会改变HEAD头指针的。而且只有当HEAD切换到某个分支的时候才可以对提交进行跟踪,否则就会进入“分离头指针”的状态 需要git checkout master。

4.git reset命令:
git reset HEAD file 从版本库覆盖到index,若想把工作区恢复还需要再git checkout file

git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
注:
1:git reset –hard HEAD^ ,其中HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以写成HEAD~2 ,依次类推
2:–hard 表示放弃所有本地改动

5.git fetch

1,从远程获取最新版本到本地并新建分支
Git fetch origin master:tmp
git fetch origin master:temp 这句命令的意思是:从远程的origin仓库的master分支下载到本地并新建一个分支tmp

比较代码
git diff temp

合并tmp分支到master分支
git merge tmp

删除tmp分支
git branch -d tmp

如果该分支没有合并到主分支会报错,可以用以下命令强制删除git branch -D < 分支名>

2,如果我想从远端的源仓库更新到本地的代码仓库,可以输入“git fetch origin”的命令,该命令的输入类似如下格式:

remote: Counting objects: 382, done.
remote: Compressing objects: 100% (203/203), done.
remote: Total 278 (delta 177), reused 103 (delta 59)
Receiving objects: 100% (278/278), 4.89 MiB | 539 KiB/s, done.
Resolving deltas: 100% (177/177), completed with 40 local objects.
From ssh://[email protected]/srv/git/fiji
3036acc..9eb5e40 debian-release-20081030 -> origin/debian-release-20081030
* [new branch] debian-release-20081112 -> origin/debian-release-20081112
* [new branch] debian-release-20081112.1 -> origin/debian-release-20081112.1
3d619e7..6260626 master -> origin/master

最重要的是这两行:

3036acc..9eb5e40 debian-release-20081030 -> origin/debian-release-20081030
* [new branch] debian-release-20081112 -> origin/debian-release-20081112

第一行表明远端的origin/debian-release-20081030分支的提交(commit)ID已经从3036acc更新为9eb5e40。箭头前的部分是远端分支的名称。第二行是我们采取的动作,创建远程跟踪分支(如果远程仓库有新的tags,git fetch也会一并下载到本地)。

前面那些行显示出“git fetch”命令会将哪些文件下载到本地,这些文件一旦下载到本地之后,就可以在本地进行任意操作了。

“git fetch”命令执行完毕之后,还不会立即将下载的文件合并到你当前工作目录里,这就给你了一个选择下一步操作的机会,要是想将从远程分支下载的文件更新到你的工作目录里,你需要执行一个“合并(merge)”操作。例如,我当前的本地分支为”master“(执行git checkout master后),这时我想执行合并操作:

git merge origin/master

( 几句题外话:合并的时候有可能你还没有对远程分支提交过任何的更改,或者可能是一个复杂的合并。)

如果你只是想看看本地分支和远程分支的差异,你可以使用下面的命令:

git diff master origin/master

单独进行下载和合并是一个好的做法,你可以先看看下载的是什么,然后再决定是否和本地代码合并。而且分开来做,可以清晰的区别开本地分支和远程分支,方便选择使用。

四·非常用命令
1.撤消未跟踪文件 git clean -dxf
清除所有未跟踪文件,包括纳入ignored的文件。如果要保留ignored的文件修改,使用参数-df

2.cat .git/HEAD 一般指向当前分支名master
cat .git/refs/heads/master 指向当前代码库hash,即最近一次提交的ID

3.git branch -vv(两个v),就能够看到本地分支跟踪的远程分支。

4.使用git config –list查看配置设置

http://rogerdudler.github.io/git-guide/index.zh.html 一个简要的介绍
http://blog.csdn.net/tiansidehao/article/details/50318811 一些简单的git 操作
http://www.tuicool.com/articles/A3Mn6f checkout命令的详解
http://blog.csdn.net/wirelessqa/article/details/20152353 git撤销的操作

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章