git 经常使用操作集锦
创建仓库
新建普通仓库:
jxdong@ubuntu-server:~/workspace/git$ git init
Reinitialized existing Git repository in /home/jxdong/workspace/git/.git/
新建 bare 仓库:
jxdong@ubuntu-server:~/workspace/git.git$ git init --bare
Initialized empty Git repository in /home/jxdong/workspace/git.git/
bare 仓库里面不包括源码,仅仅具有版本号管理管理功能,无法运行 checkout 等代码管理操作:
jxdong@ubuntu-server:~/workspace/git.git$ ls
branches config description HEAD hooks info objects refs
克隆仓库
克隆普通 git 仓库:
jxdong@ubuntu-server:~/workspace$ git clone git git_1
Cloning into 'git_1'...
done.
warning: You appear to have cloned an empty repository.
克隆为 bare 仓库:
jxdong@ubuntu-server:~/workspace$ git clone git git_1.git --bare
Cloning into bare repository 'git_1.git'...
done.
warning: You appear to have cloned an empty repository.
由于我们的仓库里面没有提交,所以 git 提示我们克隆了空的仓库
提交代码
第一次提交初始化的版本号能够是什么都没有:
jxdong@ubuntu-server:~/workspace/git$ git commit -m "init: first version." --allow-empty
[master (root-commit) 8a22ddf] init: first version.
jxdong@ubuntu-server:~/workspace/git$ git log
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
init: first version.
加入项目文件
jxdong@ubuntu-server:~/workspace/git$ echo test > myfile1.txt
jxdong@ubuntu-server:~/workspace/git$ git add myfile1.txt
提交到本地仓库
jxdong@ubuntu-server:~/workspace/git$ git commit -m "work: add file1"
[master 8ed6d03] work: add file1
1 file changed, 1 insertion(+)
create mode 100644 myfile1.txt
查看历史
jxdong@ubuntu-server:~/workspace/git$ git log
commit 8ed6d030278c0aef63052d6ba1946281c8a50ec8
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
init: first version.
回退版本号
作为提交的回退
revert 会撤销一次 commit 并把撤销操作作为 commit 提交,所以历史里面包括这次撤销操作的 commit
jxdong@ubuntu-server:~/workspace/git$ git log
commit 746d6596b7d5b84db9c27ceef1063be977510c4e
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:44:22 2014 +0800
Revert "work: add file1"
This reverts commit 8ed6d030278c0aef63052d6ba1946281c8a50ec8.
commit 8ed6d030278c0aef63052d6ba1946281c8a50ec8
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
init: first version.
jxdong@ubuntu-server:~/workspace/git$ ls
强制删除一次提交
reset 与 –hard 參数,将会真正去掉这次commit, 将会删除 git 历史。比較危急,用于那些失败的 提交。
jxdong@ubuntu-server:~/workspace/git$ git reset --hard HEAD~1
HEAD is now at 8ed6d03 work: add file1
jxdong@ubuntu-server:~/workspace/git$ git log
commit 8ed6d030278c0aef63052d6ba1946281c8a50ec8
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
init: first version.
jxdong@ubuntu-server:~/workspace/git$ ls
myfile1.txt
改动提交历史
我们再加入一个文件,并提交。
jxdong@ubuntu-server:~/workspace/git$ echo test > myfile2.txt
jxdong@ubuntu-server:~/workspace/git$ git add myfile2.txt
jxdong@ubuntu-server:~/workspace/git$ git commit -m "work: add file2"
[master 021f89c] work: add file2
1 file changed, 1 insertion(+)
create mode 100644 myfile2.txt
jxdong@ubuntu-server:~/workspace/git$ git log
commit 021f89cfd5aa195cd841eb0e64a2d712cc1f8356
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:45:49 2014 +0800
work: add file2
commit 8ed6d030278c0aef63052d6ba1946281c8a50ec8
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
init: first version.
rebase 命令能够回退到指定的提交处,然后改动这次提交之后的历史。
包括的功能:
- pick,採用这次提交,什么也不做
- reword,採用这次提交,仅仅是改动提交信息
- edit,採用提交,并停在这次提交这里,你能够開始改动这次提交
- squash,合并提交,将这次提交合并到之前的一次提交里面
- fixup,与squash 一致,直接合并忽略提交信息
- x,exec,运行一些命令
这里以合并为例
jxdong@ubuntu-server:~/workspace/git$ git rebase -i 8a22ddfaaf374531dbdba02ef40bb10006057f6f
pick 8ed6d03 work: add file1
pick 021f89c work: add file2
# Rebase 8a22ddf..021f89c onto 8a22ddf
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
".git/rebase-merge/git-rebase-todo" 16L, 542C written
Rebasing (2/2)
# This is a combination of 2 commits.
# The first commit's message is:
work: add file1
# This is the 2nd commit message:
work: add file2
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: myfile1.txt
# new file: myfile2.txt
#
~
".git/COMMIT_EDITMSG" 18L, 438C written
[detached HEAD a5d9008] work: add file1
2 files changed, 2 insertions(+)
create mode 100644 myfile1.txt
create mode 100644 myfile2.txt
Successfully rebased and updated refs/heads/master.
看一下,合并后的历史
jxdong@ubuntu-server:~/workspace/git$ git log
commit a5d9008e0d87302ed1dc9c5fa8957294efc3e403
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
work: add file2
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
init: first version.
生成补丁
补丁的生成,-n 后面数字表示将要生成之前的多少次提交作为布丁。
jxdong@ubuntu-server:~/workspace/git$ git format-patch -n1
0001-work-add-file1.patch
应用布丁
应用布丁,须要具有同样祖先的 git 仓库,以避免错误,我们開始克隆过一个仓库,他们是来自同一个祖先
jxdong@ubuntu-server:~/workspace/git$ cd ..
jxdong@ubuntu-server:~/workspace$ cd git
git/ git_1/ git_1.git/ git.git/
jxdong@ubuntu-server:~/workspace$ cd git_1
git_1/ git_1.git/
jxdong@ubuntu-server:~/workspace$ cd git_1
jxdong@ubuntu-server:~/workspace/git_1$ git am ../git/0001-work-add-file1.patch
Applying: work: add file1
applying to an empty history
获取远端仓库代码
加入远端
jxdong@ubuntu-server:~/workspace/git_1$ git remote add git ../git
获代替码
jxdong@ubuntu-server:~/workspace/git_1$ git fetch git
warning: no common commits
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
From ../git
* [new branch] master -> git/master
查看全部分支
jxdong@ubuntu-server:~/workspace/git_1$ git branch -a
* master
remotes/git/master
表示当前在本地的 master 分支,我们另一个远端叫 git 的仓库,里面包括一个 master 分支
合并分支
我们先在分支上再提交一次,这次也加入一个文件。
jxdong@ubuntu-server:~/workspace/git_1$ echo test2 > myfile2.txt
jxdong@ubuntu-server:~/workspace/git_1$ git commit -m "work: modfy file2"
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: myfile2.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
jxdong@ubuntu-server:~/workspace/git_1$ git commit -am "work: modfy file2"
[master 503a6c9] work: modfy file2
1 file changed, 1 insertion(+), 1 deletion(-)
jxdong@ubuntu-server:~/workspace/git_1$ git log
commit 503a6c922a6a0f0fc298c1b5b8289fd2babb435c
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:50:30 2014 +0800
work: modfy file2
commit 24651eb534f5f4db86e61e62f48d7959aaaf4e65
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
work: add file2
合并分支
jxdong@ubuntu-server:~/workspace/git_1$ git merge git/master
Auto-merging myfile2.txt
CONFLICT (add/add): Merge conflict in myfile2.txt
Automatic merge failed; fix conflicts and then commit the result.
处理冲突
首先查看冲突
jxdong@ubuntu-server:~/workspace/git_1$ git diff
diff --cc myfile2.txt
index 180cf83,9daeafb..0000000
--- a/myfile2.txt
+++ b/myfile2.txt
@@@ -1,1 -1,1 +1,5 @@@
++<<<<<<< HEAD
+test2
++=======
+ test
++>>>>>>> git/master
改动冲突并提交
解决冲突主要是看须要保留本地的内容还是要合并的内容
jxdong@ubuntu-server:~/workspace/git_1$ git commit -a
Merge remote-tracking branch 'git/master'
Conflicts:
myfile2.txt
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
# .git/MERGE_HEAD
# and try again.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
提交完毕合并成功
jxdong@ubuntu-server:~/workspace/git_1$ git log
commit d1feccc31ba37983e2d217ec7b497bffebdde3f1
Merge: 503a6c9 a5d9008
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:56:46 2014 +0800
Merge remote-tracking branch 'git/master'
Conflicts:
myfile2.txt
commit 503a6c922a6a0f0fc298c1b5b8289fd2babb435c
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:50:30 2014 +0800
work: modfy file2
commit 24651eb534f5f4db86e61e62f48d7959aaaf4e65
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
work: add file2
commit a5d9008e0d87302ed1dc9c5fa8957294efc3e403
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:43:52 2014 +0800
work: add file1
work: add file2
commit 8a22ddfaaf374531dbdba02ef40bb10006057f6f
Author: Royce Jiang <jiangxd@embedinfo.com>
Date: Fri May 30 11:40:15 2014 +0800
git 经常使用操作集锦的更多相关文章
- git命令行操作
从本地上传代码到仓库(假设已经建好仓库): 1.初始化: git init 2.将所有文件加入缓存区: git add * 3.提交当前工作空间的修改内容: git commit -m 'commit ...
- Eclipse for Java EE软件操作集锦(二)
看本文章之前请确保已经了解eclipse建立web工程,如果有疑问请查看本系列文章第一篇 eclipse软件操作集锦(一) 1.我们添加一个servlet 配置一下web.xml测试一下是否能正常显示 ...
- Git基本命令行操作 (转)
Git远程操作详解 作者: 阮一峰 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和 ...
- windows下使用TortoiseGit代替Git命令行操作
windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...
- Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消
Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消 Git的撤消操作 - 重置, 签出 和 撤消 Git提供了多种修复你开发过程中的错误的方法. 方法的选择取决于你的情况: 包 ...
- 2.4 Git 基础 - 撤消操作
2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...
- delphi关于文件操作集锦
关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...
- git上传中的排除的配置文件, git实际的操作代码;
git上传中的排除的配置文件: git实际的操作 在主目录建立.gitignore文件并输入以下保存: *.class #package file *.war *.ear #kdiff3 ignore ...
- centos下升级git版本的操作记录
在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned e ...
随机推荐
- Gitlab-通过API管理项目
Gitlab有一个非常强大的API,几乎可以通过API管理在Gitlab服务器中的所有项目. 在这里我们只是测试终端点的API, 因此我们需要一个程序来进行测试 .在这里我使用的是针对Google浏览 ...
- 【转】 LINUX中IPTABLES和TC对端口的带宽限制 端口限速
不管是iptables还是tc(traffic control)功能都很强大,都是与网络相关的工具,那么我们就利用这两个工具来对端口进行带宽的限制. 1.使用命令ifconfig查看服务器上的网卡信息 ...
- 【知了堂学习笔记】java 编写几种常见排序算法2
排序的分类: 1.直接选择排序 它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~ ...
- 移动端h5下ul实现横向滚动css代码
html代码: <ul id="category"> <li>品牌团</li> <li>美体个护</li> <li ...
- Node.js CVE-2017-14849复现(详细步骤)
0x00 前言 早上看Sec-news安全文摘的时候,发现腾讯安全应急响应中心发表了一篇文章,Node.js CVE-2017-14849 漏洞分析(https://security.tencent. ...
- 机器学习之路:python 特征降维 主成分分析 PCA
主成分分析: 降低特征维度的方法. 不会抛弃某一列特征, 而是利用线性代数的计算,将某一维度特征投影到其他维度上去, 尽量小的损失被投影的维度特征 api使用: estimator = PCA(n_c ...
- VMWare虚拟机下CentOS 配置网络实现远程连接,提供Web访问
最近使用VMWARE虚拟机当中redhat操作系统,感觉直接使用很不方便,于是就决定配置下redhat网络,通过本机远程工具SecureCRT来连接redhat使用. 环境说明:本机操 ...
- Codeforces Round #102 (Div. 1) A. Help Farmer 暴力分解
A. Help Farmer 题目连接: http://www.codeforces.com/contest/142/problem/A Description Once upon a time in ...
- Python— isinstance用法说明
在学习自动化测试的脚本中发现了这个函数,所以在网上查了一下资料进行如下整理: 通过帮助查看如下: 作用:来判断一个对象是否是一个已知的类型: 其第一个参数(object)为对象,第二个参数为类型名(i ...
- GIT(6)----fork和clone的区别,fetch与pull的区别
参考资料: [1].Git学习笔记:fork和clone的区别,fetch与pull的区别 [2].在Github和Git上fork之简单指南