git远程分支代码拉取
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git远程分支代码拉取相关的知识,希望对你有一定的参考价值。
1.远程拉取gitlab 工程分支,并在本地建立分支
具体过程
- 新建一个空文件
- 初始化 git init
- 自己要与origin master建立连接(下划线远程仓库链接)
git remote add origin http://192.168.9.10:8888/root/game-of-life.git- 把远程分支拉到本地(game-of-live-first_branch为远程仓库的分支名)
git fetch origin game-of-live-first_branch- 在本地创建分支game-of-live-first_branch并切换到该分支
git checkout -b game-of-live-first_branch origin/game-of-live-first_branch- 把game-of-live-first_branch远程分支上的内容都拉取到本地
git pull origin game-of-live-first_branch
2.修改分支的内容并上传给远程分支
3.如果想在linux中拉取远程分支代码
[[email protected] rollBack]# git init
Initialized empty Git repository in /test/rollBack/.git/
[[email protected] rollBack]# git remote add origin [email protected]:root/game-of-life.git
[[email protected] rollBack]# git fetch origin game-of-live-first_branch
remote: Enumerating objects: 1770, done.
remote: Counting objects: 100% (1770/1770), done.
remote: Compressing objects: 100% (582/582), done.
remote: Total 1770 (delta 1112), reused 1770 (delta 1112)
Receiving objects: 100% (1770/1770), 15.00 MiB | 28.20 MiB/s, done.
Resolving deltas: 100% (1112/1112), done.
From 192.168.9.10:root/game-of-life
- branch game-of-live-first_branch -> FETCH_HEAD
[[email protected] rollBack]# git pull origin game-of-live-first_branch
From 192.168.9.10:root/game-of-life- branch game-of-live-first_branch -> FETCH_HEAD
4.git使用
4.1.源码安装git
[[email protected] ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
[[email protected] ~]# yum -y install perl-ExtUtils-MakeMaker package
[[email protected] ~]# tar xvf git-2.9.5 -C /usr/src/
[[email protected] ~]# cd /usr/src/git-2.9.5
[[email protected] git-2.9.5]# make configure
GIT_VERSION = 2.9.5
GEN configure
[[email protected] git-2.9.5]# ./configure --prefix=/usr/local/
[[email protected] git-2.9.5]# make && make install
4.2.配置git
[[email protected] git-2.9.5]# git config --global user.name "yunjisuan" #配置git使用用户
[[email protected] git-2.9.5]# git config --global user.email "[email protected]" #配置git使用邮箱
[[email protected] git-2.9.5]# git config --global color.ui true #语法高亮
[[email protected] git-2.9.5]# git config --list 查看全局配置br/>user.name=yunjisuan
[email protected]
color.ui=true查看生成的配置文件并添加新模块 #在root下
[[email protected] ~] # cat .gitconfig
[user]
name = clsn
email = [email protected]
[color]
ui = true[[email protected] ~]# cat .gitconfig
[user]
name = git
email = [email protected]
[color]
ui = true
[recevice] #添加此模块
denyCurrentBranch = ignore获得配置命令的手册 #三种方法
git help <verb>
git <verb> --help
man git-<verb>
4.3.配置ssh,增加rsa认证
修改配置文件,增加下面内容
[[email protected] ~]# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes重启
[[email protected] ~]# systemctl restart sshd
4.4.获取git仓库(初始化仓库)
[[email protected] ~]# mkdir /git_data #创建目录
[[email protected] ~]# cd /git_data/
[[email protected] git_data]# git init #初始化目录
Initialized empty Git repository in /git_data/.git/
[[email protected] git_data]# git status #查看工作区状态
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)添加并提交文件
[[email protected] git]# touch README
[[email protected] git]# echo "please read first" >> README
[[email protected] git]# git add *
[[email protected] git]# git commit -m "first commit"
5.git仓库的管理
5.1向git内增加文件:
创建文件
[[email protected] git_data]# touch README
[[email protected] git_data]# ls
README
[[email protected] git_data]# git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to track)
[[email protected] git_data]# git add ./ #添加文件跟踪
[[email protected] git_data]# git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README
[[email protected] git_data]# tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── index
├── info
│ └── exclude
├── objects
│ ├── e6
│ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 #查看隐藏目录下增加了一条文件
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
10 directories, 15 files
[[email protected] git_data]# git commit -m ‘first commit‘ #由工作区提交到本地仓库
[master (root-commit) 621be41] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
[[email protected] git_data]# git status #查看git的状态
On branch master
nothing to commit, working tree clean
[[email protected] git_data]# tree .git/ #提交后的git目录状态
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ └── heads
│ └── master
├── objects
│ ├── 54
│ │ └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
│ ├── 62
│ │ └── 1be41481cd4dd65b58d1400173228125cdeb5b
│ ├── e6
│ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ ├── info
│ └── pack
└── refs
├── heads
│ └── master
└── tags
15 directories, 21 files
总结说:
git add 添加到暂存区域
git commit 提交git仓库 -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看
5.2删除git内文件
1) 没有添加到暂存区的数据直接rm删除即可。
2) 已经添加到暂存区数据:
git rm --cached database
#→将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)
git rm -f database
#→将文件数据从git暂存区和工作目录一起删除
5.3改(重命名数据)
1)没有添加到暂存区的数据直接mv/rename改名即可。
2)已经添加到暂存区数据:
git mv README NOTICE #这个改的时候工作目录里的文件名字也改了
5.4查 (查看历史记录)
? git log #→查看提交历史记录
? git log -2 #→查看最近几条记录
? git log -p -1 #→-p显示每次提交的内容差异,例如仅查看最近一次差异
? git log --stat -2 #→--stat简要显示最近两次,数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
? git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息
? git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
? git log --pretty=fomat:"%h %cn" #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。
使用format参数来指定具体的输出格式
格式 说明
%s 提交说明
%cd 提交日期
%an 作者的名字
%cn 提交者的姓名
%ce 提交者的电子邮件
%H 提交对象的完整SHA-1哈希字串
%h 提交对象的简短SHA-1哈希字串
%T 树对象的完整SHA-1哈希字串
%t 树对象的简短SHA-1哈希字串
%P 父对象的完整SHA-1哈希字串
%p 父对象的简短SHA-1哈希字串
%ad 作者的修订时间
5.5还原历史数据
Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。
git reset --hard hash :
? git reset --hard HEAD^ #→还原历史提交版本上一次
? git reset --hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统会自动匹配)
5.6还原未来数据
什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。
git reflog #→查看未来历史更新点
[[email protected] git_data]# git reflog
b6a6e89 [email protected]{0}: reset: moving to HEAD^
519bf0d [email protected]{1}: commit: third commit
b6a6e89 [email protected]{2}: commit: second commit
621be41 [email protected]{3}: commit (initial): first commit
[[email protected] git_data]# git reset --hard 519b #在删除third commit情况下返回third commit
HEAD is now at 519bf0d third commit
5.7标签使用
前面回滚使用的是一串字符串,又长又难记。
git tag v1.0 #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
git tag #→查看当前所有的标签
git show v1.0 #→查看当前1.0版本的详细信息
git tag v1.2 -m "version 1.2 release is test" #→创建带有说明的标签,-a指定标签名字,-m指定说明文字
git tag -d v1.0 #→我们为同一个提交版本设置了两次标签,删除之前的v1.0
[[email protected] git_data]# git reset --hard HEAD^ #还原历史数据
HEAD is now at b6a6e89 second commit
[[email protected] git_data]# git reset --hard v1.0 #利用标签回滚
HEAD is now at 519bf0d third commit
5.8对比数据
git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放?多了。
git diff README
[[email protected] git_data]# echo 222 >> README
[[email protected] git_data]# git diff README
diff --git a/README b/README
index 2bbe845..56c43c1 100644
--- a/README
+++ b/README
@@ -1,2 +1,3 @@
111
111
+222
6..分支结构
6.1 增加分支
git branch 分支名称
6.2分支切换
[[email protected] git_data]# git branch #查看分支
linux
- master
[[email protected] git_data]# git checkout linux #切换到分支 ‘linux‘
M README
Switched to branch ‘linux‘
[[email protected] git_data]# git branch- linux
master
6.3在linux分支进行修改
例:就是切换到分支后进行普通操作
echo "clsn in linux" >> README
6.4合并代码
合并Linux上的代码到master上
git merge linux
6.5合并失败解决
模拟冲突,在文件的同一行做不同修改
在master 分支进行修改
[[email protected] git_data]# cat README
2017年11月30日
[[email protected] git_data]# echo "clsn in master">> README
[[email protected] git_data]# git commit -a -m "clsn 2017年11月30日 09点20分 "
[master 7ab71d4] clsn 2017年11月30日 09点20分
1 file changed, 1 insertion(+)切换到linux分支
[[email protected] git_data]# git checkout linux
[[email protected] git_data]# cat README
2017年11月30日
[[email protected] git_data]# echo "clsn in linux" >> README
[[email protected] git_data]# git commit -a -m "2017年11月30日 03"
[linux 20f1a13] 2017年11月30日 03
1 file changed, 1 insertion(+)回到master分区,进行合并,出现冲突
[[email protected] git_data]# git checkout master
切换到分支 ‘master‘
[[email protected] git_data]# git merge linux冲突(内容):合并冲突于 README
自动合并失败,修正冲突然后提交修正的结果。解决冲突
[[email protected] git_data]# vim README
2017年11月30日
clsn in master
clsn in linux
#手工解决冲突
[[email protected] git_data]# git commit -a -m "2017年11月30日 03"
[master b6a097f] 2017年11月30日 03
6.6删除分支
因为之前已经合并了linux分支,所以现在看到它在列表中。
在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。
git branch --no-merged #查看所有包含未合并工作的分支git branch -d 分支name
7.服务器命令总结
服务器上的管理命令
mkdir: //XX (创建一个空目录 XX指目录名)
pwd: // 显示当前目录的路径。
git init //把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX //把xx文件添加到暂存区去。
git commit –m “XX” //提交文件 –m 后面的是注释。
git status //查看仓库状态
git diff XX // 查看XX文件修改了那些内容
git log //查看历史记录
git reset --hard HEAD^ //或者 git reset --hard HEAD~ 回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX //查看XX文件内容
git reflog //查看历史记录的版本号id
git checkout -- XX //把XX文件在工作区的修改全部撤销。
git rm XX //删除XX文件
git checkout –b dev //创建dev分支 并切换到dev分支上
git branch //查看当前所有的分支
git checkout master // 切换回master分支
git merge dev //在当前的分支上合并dev分支
git branch –d dev //删除dev分支
git branch name //创建分支
git stash //把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list //查看所有被隐藏的文件列表
git stash apply //恢复被隐藏的文件,但是内容不删除
git stash drop //删除文件
git stash pop //恢复文件的同时 也删除文件
git remote //查看远程库的信息
git remote –v //查看远程库的详细信息
git remote add origin https://github.com/-- //关联一个远程库 --为路径
git push –u origin master //(第一次要用-u 以后不需要)把当前master分支推送到远程库
git push origin master //Git会把master分支推送到远程库对应的远程分支上
git clone https://github.com/--- // 从远程库中克隆 --为路径远程仓库相关命令 检出仓库: $ git clone 查看远程仓库:$ git remote -v 添加远程仓库:$ git remote add 删除远程仓库:$ git remote rm 修改远程仓库:$ git remote set-url --push 拉取远程仓库:$ git pull 推送远程仓库:$ git push *如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下: $git push origin test:master // 提交本地test分支作为远程的master分支 $git push origin test:test // 提交本地test分支作为远程的test分支
以上是关于git远程分支代码拉取的主要内容,如果未能解决你的问题,请参考以下文章