git使用综合

本文详细介绍了Git的基本使用方法,包括SSH密钥的生成与配置、常用命令的解释与应用实例等,适合初学者快速掌握Git的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作场景描述:
  一个远程服务器CentOS(已安装git:yum install git),本地电脑windows7(已安装tortoisegit-1.8.6.0-1385537227873.msi和git-1.9.2-1401875809633.exe【即tortoisegit和git客户端】)。第三方代码托管方(git.oschina.net)。本地开发好后,提交第三方代码托管方,然后在远程服务器上更新代码git pull。

SSH Keys

SSH key 可以让你在你的电脑和 Git @ OSC 之间建立安全的加密连接。

你可以按如下命令来生成sshkey

ssh-keygen -t rsa -C "xxxxx@xxxxx.com"# Creates a new ssh key using the provided email
# Generating public/private rsa key pair...

此处注意两点:

     (1)然后会让输入id_rsa的文件位置,当时我输入了一个自定义的位置,结果总是提示无权限访问,后来我直接定义到当前用户的主目录下的.ssh/文件夹下,就可以了。

  (2)是把id_rsa.pub里的所有内容,包含头部ssh-rsa和尾部邮箱都复制过去。

查看你的public key,并把他添加到 Git @ OSC http://git.oschina.net/keys

cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

添加后,在终端(Terminal)中输入

ssh -T git@git.oschina.net

若返回

Welcome to Git@OSC, yourname!

则证明添加成功。

 

常用命令:

Linus为Linux Kernel Project发起的版本控制项目。
HEAD代表当前最新状态。
tag为某个状态的标签。
SHA1为每个提交日志的唯一标识。

install:

apt-get install git-core


git clone:

git仓库可以使用git clone获得:
git clone git://git.longene.org/unifiedkernel.git

也可以通过浏览器浏览。
http://www.longene.org/gitweb/

通过git pull更新仓库,使用git init-db初始化自己的仓库。


config:

开发人员需要为git仓库配置相关信息,这样在提交代码时,这些信息会自动
反映在git仓库的日志中。

git config user.name "your name"
git config user.email yourname@insigma.com.cn
git config core.editor vim
git config core.paper "less -N"
git config color.diff true
git config alias.co checkout

git config alias表示,可以用git co代表git checkout。git var -l可以查看
已经设置的配置。


diff:

开发人员在本地进行开发后,可以使用git diff查看改动。
除了直接比较当前开发后的改动外,git diff还可以:

git diff tag 比较tag和HEAD之间的不同。
git diff tag file 比较一个文件在两者之间的不同。
git diff tag1..tag2 比较两个tag之间的不同。
git diff SHA11..SHA12 比较两个提交之间的不同。
git diff tag1 tag2 file or
git diff tag1:file tag2:file 比较一个文件在两个tag之间的不同。


ORIG_HEAD用于指向前一个操作状态,因此在git pull之后如果想得到pull的
内容就可以:

git diff ORIG_HEAD

git diff --stat 用于生成统计信息。
git diff --stat ORIG_HEAD


apply:

git apply相当于patch命令。
--check 检查能否正常打上补丁,-v verbose模式, -R reverse模式,反打补丁。


log:

git log file 查看一个文件的改动。
git log -p 查看日志和改动。
git log tag1..tag2 查看两个tag之间的日志。
git log -p tag1..tag2 file 查看一个文件在两个tag之间的不同。
git log tag.. 查看tag和HEAD之间的不同。


commit:

git commit -a -e 提交全部修改文件,并调用vim编辑提交日志。
git reset HEAD^ or
git reset HEAD~1 撤销最后一次提交。
git reset --hard HEAD^ 撤销最后一次提交并清除本地修改。
git reset SHA1 回到SHA1对应的提交状态。


add/delete/ls:

git add -a 添加所有文件。
git rm file 从git仓库中删除文件。
git commit 添加或是删除后要提交。

git ls-files -m 显示修改过的文件。
git ls-files 显示所有仓库中的文件。

git中有四种对象:blob、tree、commit、tag。
blob代表文件,tree代表目录,commit代表提交历史,tag代表标签。
这四种对象都是由SHA1值表示的。在仓库的.git目录中保存了git管理仓库
所需要的全部信息。

git ls-tree HEAD file 显示file在HEAD中的SHA1值。
git cat-file -t SHA1 显示一个SHA1的类型。
git cat-file type SHA1 显示一个SHA1的内容。type是blob、tree、commit、tag之一。

patch:

git format-patch -1 生成最后一个提交对应的patch文件。
git am < patch 把一个patch文件加入git仓库中。
git am --resolved 如果有冲突,在解决冲突后执行。
git am --skip 放弃当前git am所引入的patch。


conflict:

git merge 用于合并两个分支。
git diff 如果有冲突,直接使用diff查看,
冲突代码用<<<和>>>表示。手动修改冲突代码。
git update-index 更新修改后的文件状态。
git commit -a -e 提交为解决冲突而修改的代码。


branch:

git branch -a 查看所有分支。
git branch new_branch 创建新的分支。
git branch -d branch 删除分支。
git checkout branch 切换当前分支。-f参数可以覆盖未提交内容。


daemon:

有时更新公共代码仓库使用patch的方式,或者直接
用git pull git://ip/repo branch的方式更新每个人的代码。使用git pull的方式需要
提交代码的机器运行:
git daemon --verbose --export-all --enable=receive-pack --base-path=/repo


request-pull:


git request-pull start url 用于产生本次pull请求的统计信息。


clean:


git clean -dxf 用于清除未跟踪文件。
git clean -dnf 可以显示需要删除的文件,但不包括被.gitignore忽略的。
git reset --hard HEAD 用于清除跟踪文件的修改。

安装:

git,分布式版本控制系统,作者:Linus Benedict Torvalds。

  1.下载和安装git
  下载地址:http://git-scm.com/download

  或者wget获取:wget http://kernel.org/pub/software/scm/git/git-1.7.6.tar.bz2

  解压后切换到其目录:
  #tar zxvf git-1.7.6.tar.bz2
  #cd git-1.7.6

  使用默认配置进行安装,如果想修改配置,可以使用./configure --help来获取帮助。
  #./configure    配置
  #make           编译
  #make install   安装

  2.初始化配置
  git默认安装在/usr/local/bin,安装之后可以验证一下是否装好了。
  #whereis git
   git: /usr/bin/git /usr/share/man/man1/git.1.gz
  #git --version
  git version 1.7.6
  $git --help

  首先需要指定用户名和电子邮箱地址:
  # git config --global user.name "sasa"
  # git config --global user.email sasa@manyi.cc
  再验证一下配置信息:
  # git config --list
  user.name=sasa
  user.email=sasa@manyi.cc
  core.repositoryformatversion=0
  core.filemode=true
  core.bare=false
  core.logallrefupdates=true
   这些配置是存放在个人注目礼下的.gitconfig文件中的,可以查看#vi ~/.gitconfig

[user]
        name = sasa
        email = sasa@manyi.cc

 

 

  3.建立工程。
  本地存储的任何一个目录都可以建立git工程,如果已有工程位于/home/sasa/gitwork目录,就可以把这个目录定义为git工程。
  # cd /home/sasa/gitwork
  # git init    (注意:要切换到gitwork目录下,才能对该目录进行提交,初始化的也是针对该目录)
  Reinitialized existing Git repository in /home/sasa/gitwork/.git/
  这样就建立了一个名为.git的文件夹,这就是git用来存储信息和跟踪改动的文件夹。
  查看该文件夹下所有的文件:
  ## ls -altr .git 

复制代码
总用量 52
drwxr-xr-x. 4 root root 4096  3月  7 11:28 refs
drwxr-xr-x. 2 root root 4096  3月  7 11:28 branches
-rw-r--r--. 1 root root   73  3月  7 11:28 description
drwxr-xr-x. 2 root root 4096  3月  7 11:28 info
drwxr-xr-x. 2 root root 4096  3月  7 11:28 hooks
-rw-r--r--. 1 root root   23  3月  7 11:28 HEAD
-rw-r--r--. 1 root root  112  3月  7 11:48 index
-rw-r--r--. 1 root root  303  3月  7 11:48 COMMIT_EDITMSG
drwxr-xr-x. 7 root root 4096  3月  7 11:49 objects
drwxr-xr-x. 3 root root 4096  3月  7 11:49 logs
drwxr-xr-x. 3 root root 4096  3月  7 11:51 ..
-rw-r--r--. 1 root root   92  3月  7 12:41 config
drwxr-xr-x. 8 root root 4096  3月  7 12:41 .
复制代码

 

 

  4.向工程添加和提交文件。
  (目前gitwork目录下仅有文件msg.php)
  # git add msg.php
  # git commit

[master 306e67d] This is the first update.
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 msg.php

 

 

  5.更改文件和提交改动
  编辑文件、添加或者删除了一些字段:
  #vi msg.php
  查看和git仓库中的文件相比有了哪些改动:
  #git diff

复制代码
diff --git a/mynote.php b/mynote.php
deleted file mode 100644
index 6edf9e3..0000000
--- a/mynote.php
+++ /dev/null
@@ -1,2 +0,0 @@
-
-iii   hello ,this is my note work!
复制代码

 

  注:如果要提交,需要先确保文件添加到了临时区域(staging area),然后才能提交,提交时会自动打开系统的默认编辑器,用户添加一些注释后保存并退出编辑器的时候,这些注释就同时提交到仓库中去了。

  # git add msg.php
  # git commit

[master 9090cb1] This is the second change. ---->这里就是备注
 1 files changed, 1 insertions(+), 1 deletions(-)

 

 

  查看状态:
  #git status

复制代码
# On branch master
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    mynote.php
#
no changes added to commit (use "git add" and/or "git commit -a")
复制代码

 

  查看文件历史和以往的注释:
  # git log msg.php

复制代码
commit 347aee4f50a3e82a3e664fd5f6726b35d678788b
Author: sasa <sasa@manyi.cc>
Date:   Thu Mar 7 14:39:19 2013 +0800

    This is the third change.

commit 9090cb164605d5945cadb4a0235cb25322277e96
Author: sasa <sasa@manyi.cc>
Date:   Thu Mar 7 14:36:21 2013 +0800

    This is the second change.

commit e47644aaaf4d4159c16743668dbc53e790962a6f
Author: sasa <sasa@manyi.cc>
Date:   Thu Mar 7 14:34:59 2013 +0800

    This is the first change.

commit 306e67dab039edc364e595f9089e67a8a4519dfd
Author: sasa <sasa@manyi.cc>
Date:   Thu Mar 7 12:47:59 2013 +0800

    This is the first update.
复制代码

 

 

Git在windows下使用方法:
  Git是一个免费的、开源的版本控制软件。在Windows上安装git,一般为msysgit,官方下载地址为
http://code.google.com/p/msysgit/downloads/list

(1)下载:在官方网站下载最新版本。

2 安装:点击下一步,直到出现步骤三。

3 在Windows Explorer integration选项中将“Git Bash here”和“Git GUI here”打对勾。

4 在“Adjusting your PATH environment”选项中,默认即可。

5 在“Configuring the line ending conversions”选项中, 第一个选项:如果是跨平台项目,在windows系统安装,选择; 第二个选项:如果是跨平台项目,在Unix系统安装,选择; 第三个选项:非跨平台项目,选择。

6 选择“Finish”,结束安装。

7 在桌面上,可以看到安装后的“Git Bash”选项,双击打开,可以进行操作了。

生成ssh公钥
(1)启动Git Bash:
(2)在程序中依次输入:配置email,命令如下:

$git config --global user.name "your name"   
$git config --global user.email 

"your@email.address"其中"your name"换成你的名字,"your@email.address"换成你的邮箱地址。
(3)生成公钥,用于身份认证:

ssh-keygen.exe -C "your@email.address" -t rsa

这样就可以在你的用户下取得需要的公钥匙,公钥位于你的电脑中“C:\Documents and Settings\Airen\.ssh”的“id_rsa.pub”文件下;
此时只要把你的公钥放进你项目的服务中就可以进行git的相关操作。

解决中文目录支持问题:
1、ls不能显示中文目录解决办法:
      在git/etc/git-completion.bash中增加一行:alias ls='ls --show-control-chars --color=auto'
2、git commit不能提交中文注释解决办法:
       修改git/etc/inputrc中对应的行:set output-meta on  set convert-meta off
3、git log无法显示中文注释解决办法:
      在git/etc/profile中增加一行:export LESSCHARSET=iso8859.

 

在外网服务器上搭建GIT服务器:

克隆:
$ git clonechenchi@192.168.2.171:/home/sasa/git1   (内网用户)
$ git clone  ssh:/sasa@210.22.155.236:9092/home/sasa/git1   (外网用户)

问题:clone、pull都没问题,但是push的时候出问题,错误提示:remote: error: To squelch this message and still keep the default behaviour....

解决办法:

这是由于git默认拒绝了push操作,需要进行设置,修改.git/config文件后面添加如下代码:

[receive]

 denyCurrentBranch = ignore

### Git 基本使用方法及常用命令 #### 安装与初始化配置 Git 是一种分布式版本控制系统,广泛应用于现代软件开发中。在开始使用前,需先安装 Git 工具。对于 Windows 用户,可以从官方网址下载并安装最新版 Git[^2];而对于 Linux 系统(如 Ubuntu),则可通过包管理器完成安装,例如运行以下命令: ```bash sudo apt-get update && sudo apt-get install git ``` 安装完成后,需要设置用户名和邮箱地址作为全局配置,以便每次提交时自动附加这些信息: ```bash git config --global user.name "Your Name" git config --global user.email "your_email@example.com" ``` #### 创建或克隆仓库 如果想从头开始一个新项目,可以在终端进入目标目录后执行以下命令以创建本地仓库: ```bash git init ``` 而如果是已有远程仓库的情况下,则可以直接将其复制到本地: ```bash git clone https://github.com/example/repo.git ``` #### 文件状态管理 在日常工作中,经常需要用到以下几个核心概念——跟踪文件的状态变化。主要包括三个阶段:“已修改”(Modified)、“暂存区”(Staged),以及最终的“提交历史记录”(Committed)[^3]: - 查看当前工作区状态: ```bash git status ``` - 将改动加入索引(即所谓的“add to stage”): ```bash git add <file> # 或者全部新增/变动文件统一处理 git add . ``` #### 提交更改 当准备好保存某次编辑的结果时,就需要做一次正式提交(commit): ```bash git commit -m "描述性的消息说明此次更新内容" ``` 这里的消息应当简洁明了地概括所做的调整是什么样的性质。 #### 分支操作 分支(branching)是 Git 的一大特色功能之一,允许开发者在同一时间针对同一份代码的不同部分独立开展实验性尝试而不互相干扰。 - 展示现有所有分支列表: ```bash git branch ``` - 新建一个分支: ```bash git branch new_feature_branch ``` - 切换至另一个分支: ```bash git checkout another_existing_branch ``` 值得注意的是,在较新的 Git 版本里已经引入了一条简化后的综合指令`switch`,它可以替代传统的checkout形式来做单纯的切换动作[^1]: ```bash git switch target_branch_name ``` 同样道理也适用于创建加立即跳转两步合一的情形下: ```bash git switch -c newly_created_one_based_on_current_context ``` 另外还有合并不同路径之间差异的部分时候要用merge或者rebase技术手段来达成目的等等细节不在此赘述太多. #### 远程同步 为了让团队成员共享劳动成果,必然涉及到推送(push)/拉取(pull)机制的应用场合。 - 把本地已完成的东西上传给服务器端存储起来供别人访问查阅: ```bash git push origin main ``` - 获取远端最新的进展状况并与自己手中的副本结合起来形成一致的整体视图呈现出来: ```bash git pull origin main ``` 以上只是关于Git基础层面的知识概览而已,并不足以覆盖其整个体系结构所能提供的强大能力范围之外还有很多高级话题值得深入探讨学习比如标签(tagging),子模组(submodules)等主题领域等待着我们去挖掘探索发现其中奥秘之处[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值