Git基础使用
来源:互联网 发布:淘宝店铺修改最低折扣 编辑:程序博客网 时间:2024/05/27 14:13
PS:懒惰的笔者偷懒了三个多月,懊悔中~~~~~~~~~~~~~
最近一次提交被Git虐得体无完肤,顺带把整个Git过了一遍,并且整理下,以方便以后使用。
按照惯例,先是提供一个很好的教程:
I. 配置
一般而言有两种方式,因为笔者用的是SSH方式,那么这里就只涉及SSH方式啦。首先在配置文件中的network先要选择ssh.exe才可使用,笔者配置如下:
然后只有关键的两步:
1. 生成SSH Keys
在cmd中直接执行ssh-keygen.exe即可,引号内容可以任意设置
C:\Users\eric>"C:\Program Files (x86)\Git\bin\ssh-keygen.exe" -t rsa -b 2048 -C "Eric Peng SSH keys. Email: Eric.Peng@xxx.com"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):
Your identification has been saved in c:\users\eric\.ssh\id_rsa.
Your public key has been saved in c:\users\eric\.ssh\id_rsa.pub.
The key fingerprint is:
3d:8a:84:ae:9e:59:9a:d8:c3:5c:f1:ae:ae:db:92:04 Eric Peng SSH keys. Email: Eric.Peng@xxx.com
2. 添加SSH Keys
很自然,有了Key就要想办法利用,那么通过服务器管理就是好方法了,一般而言大家在GitHub中的SSH Key中设置就可以了,秘钥内容就是在id_rsa.pub中找到即可。
笔者用的是Stash,直接上图,在Account中可以找到SSH Keys加以设置,直接上图。
II. 建库
首先有三个命令是非常重要的,那就是 git status, git log 与 git diff。其中,前两者都是详细记录了库的状态,待修改的文件与操作日志,而最后一个,则是对文件修改的对比,方便大家Review。建库很简单,定位到你打算建库的文件夹(尽量没有中文和特殊字符),然后执行Git init就完成了,给出笔者在Git Bash中的示例吧:
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository
$ git init
Initialized empty Git repository in c:/PJC/GitRepository/.git/
前面我们有提到,使用服务器来管理我们的项目,那么这就涉及到远程库的操作了。
首先在服务器的页面上新建一个Git库,随后回到本地打算关联的库执行:
Account是你在Github上的账户名,这样执行后,远程库的名字就是origin,当然也可以根据需要。
如何推送本地库到远程库呢?一般是使用git push命令,第一次关联加变参 -u进行关联即可。
现在我们已经和远程库做好了关联,那么怎么从远程库取下我们需要的东西呢?
这时候git clone登场,作用类似于SVN中的Checkout。
比如笔者用的是stash,那么克隆命令类似于这样:
笔者就不作更多演示了,有疑惑的朋友可以直接参考开头给出的资料。
III. 基本文件添加与修改
在这一部分也只有两个命令: git add与git commit。当然你可以通过git status随时确认库状态,是否和你所预想的一样。而要添加或修改的文件,自然要放在库的文件夹下面,至于是子文件夹还是啥就无所谓了,然后分别执行git add与git commit即可。
下面是笔者进行的一系列操作:
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git add readme.txt
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git commit -m "This is our first step to add one file"
[master (root-commit) f197419] This is our first step to a
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be commit
# (use "git checkout -- <file>..." to discard changes in
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git comm
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git diff
diff --git a/readme.txt b/readme.txt
index 867cfef..903dd1a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
Git is a version control system.
-This is our first step to add one file.
\ No newline at end of file
+This is our first step to add one file.
+First Edit: Git is free software.
\ No newline at end of file
再次修改后提交
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git add readme.txt
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: readme.txt
#
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git commit -m "Add one line. Now 3 lines."
[master 43aa999] Add one line. Now 3 lines.
1 file changed, 2 insertions(+), 1 deletion(-)
pengjunc@WIN-OPN8RC43ECJ /c/PJC/GitRepository (master)
$ git status
# On branch master
nothing to commit, working directory clean
至此,文件简单的添加修改就已经完成了,是不是超简单?
到这里,你已经学会了最最基本的Git操作。
IV. 回到过去
回退版本或任意版本HEAD永远指向当前版本,而HEAD^则是上一版本,如果要前100个版本呢?那就是HEAD~100啦
版本跳转使用Git reset来进行,而git log为提交历史,git relog查看命令历史。
这些基本命令就构成了任意版本跳转。
文件还原
那么文件复原呢?那就是git checkout的作用了,它会将工作区的文件还原到commit或add之前的状态,即还原文件。
如果你连已经add的文件都不要呢?这时候就先reset下再checkout就可以了。
删除文件
删除文件则是使用git rm随后 git commit下即可。
V. 分支管理
这一部分是git最重要的部分了,笔者虽然可以使用,但还远未到精通的地步,所以请大家移步
简而言之,分支管理类似于编程中的链表合并,而链表的内容则是根据时间轴确定的修改。
使用git branch可以查看当前所有的分支,而git branch name则可以创建分支。
git branch -d name与git branch -D name用于分支的删除。
git checkout可以切换分支,加变参-b可以新建分支。
git merge则用于合并分支,当然也可以使用git fetch与git rebase的结合来合并,笔者的实际项目中使用后者更多,因为merge容易引起冲突,解决这些冲突有时候很麻烦。
还有一个重要命令,那就是git stash,这个事干嘛的呢?将修改存储,以便以后使用 git stash apply恢复现场。类似于word中另存为的功能,只是更明了,切换更方便。
对于分支的合理使用才是Git最大的魅力所在。
而至于标签管理,由于笔者也不太用,就不在这讲述了。
当然,上面的仅仅只是基础,更多使用还待各位在项目中发掘啦。
这么点东西也写了好久,哎,午睡,欢迎各位补充各种技巧哦~
#Oct 22nd, 2014 Added
昨个在VM上搞Git,死活搞不出来,提示就是:
The authenticity of host '' can't be established.
RSA key fingerprint is xxx.
Are you sure you want to continue connecting (yes/no)?
即便选了yes也是行不通啊,各种郁闷。
后来网上找个方法
ssh -o StrictHostKeyChecking=no 192.168.xxx.xxx笔者满怀期待去试了下,继续无效,然后就郁闷了,试了各种方法无效,笔者只好黯然退场。
不过今个重新整了下,理了下思路,1、ssh-keygen出错 2、验证授权有问题
拷贝一个曾经授权的文件过来,成功从stash上拉取数据,即便是使用新的之前失败的用户名也一样,所以做出了判断:不是figerprint不一致导致的,那么问题在哪?
主要是目录问题,将之前授权的文件放入C:\Users\用户名\.ssh(VM自建立时禁止了一些功能,所以生成秘钥选择了别的文件夹)中后,虽然同样会有提示,但yes后就能接着授权从而拉取数据了。
Mark下,要是大家也遇到这问题,可以参考下。
顺带今个还使用了下Cherry-pick,不好玩o(╯□╰)o
- GIT服务器使用基础
- Git 服务器使用基础
- git使用基础
- Git使用基础
- Git使用基础篇
- Git使用基础篇
- Git使用基础篇
- Git使用基础篇
- Git使用基础篇
- Git使用基础篇
- Git使用基础篇
- Git使用基础
- Git使用基础篇
- Git使用基础篇
- Git使用基础
- Git使用基础篇
- Git使用基础篇
- Git使用基础篇
- MyGUI自动换行(修正选区)
- 黑马程序员—入学黑马前的内心挣扎。。。。。
- NYOJ-分数加减法
- 黑马程序员—关于黑马,关于学习,关于求职,关于工作
- 剑英陪你玩转图形学(一)打通任督二脉
- Git基础使用
- 黑马程序员—黑马三期已毕业同学发来的感谢信
- Web_PHP_DedeCMS_datalistcp.class.php 动态分页类使用案例;
- JQuery遍历JSON字符串 $.each实例
- Web之Servlet 1
- linux下搭建goprotobuf
- android 学习笔记——Activity
- 14-8-26
- VS2008快捷键大全